package com.kylin.common.core.beans;

/**
 * 通用返回码 <br/>
 *
 * 错误码设计：<br/>
 *      9999以下为系统级错误，<br/>
 *      其他为应用级别问题 统一格式：A-BB-CCC<br/>
 *      A:错误级别，如1代表系统级错误，2代表服务级错误；<br/>
 *      B:项目或模块名称，一般公司不会超过99个项目；<br/>
 *      C:具体错误编号，自增即可，一个项目999种错误应该够用；<br/>
 * 举例：<br/>
 *      系统级： 1001 表示缺少必填参数<br/>
 *      应用级： 201001 表示sys模块001错误  sys编号为01<br/>
 *
 * @author wuhao
 * @since  2.0.0 - 2019-06-04
 */
public enum GlobalResultCode implements ResultCode {

    SUCCESS (0,"成功"),
    FAIL (1,"操作失败"),
    UNKNOWN_EXCEPTION(-1,"系统繁忙，请稍候再试"),

    BAD_REQUEST(400, "数据校验失败"),
    UNAUTHORIZED(401, "认证失败"),
    FORBIDDEN(403, "权限不足"),
    NOT_FOUND(404, "未找到数据"),
    METHOD_NOT_ALLOWED(405, "请求方法不正确"),

    SERVICE_EXCEPTION(500, "服务异常"),

    RSA_KEY_EXCEPTION(510, "请求参数不合法"),
    RSA_TIME_EXCEPTION(511, "请求已过期，请重新发起请求"),

    /**微信接口异常*/
    WEIXIN_EXCEPTION(501, "微信接口异常");

    /**
     * 错误码
    */
    private int code;
    /**
     * 错误信息
    */
    private String msg;


    GlobalResultCode(int code, String msg){
        this.code = code;
        this.msg = msg;
    }

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

}
